package com.baizhi;

import com.baizhi.dao.CmfzAdminDao;
import com.baizhi.dao.CmfzMenuDao;
import com.baizhi.entity.CmfzAdmin;
import com.baizhi.entity.CmfzMenu;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import javafx.scene.input.InputMethodTextRun;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;
import java.util.List;


@RunWith(SpringRunner.class)
@SpringBootTest(classes =CmfzdemoApplication.class )
public class testMybatisPlus {

    @Resource
    private CmfzAdminDao cmfzAdminDao;

    @Test
    public void  test1(){
        //根据id查询
        CmfzAdmin cmfzAdmin = cmfzAdminDao.selectById(1);

        System.out.println(cmfzAdmin);
//        查询所有数据

        List<CmfzAdmin> cmfzAdmins = cmfzAdminDao.selectList(null);
        for (CmfzAdmin cmfzAdmin1 : cmfzAdmins) {

            System.out.println(cmfzAdmin1);
        }
    }

    @Test
    public void  test2(){
        //添加一条数据
        CmfzAdmin cmfzAdmin = new CmfzAdmin();
        cmfzAdmin.setUsername("hhh");
        cmfzAdmin.setPassword("123");

        int insert = cmfzAdminDao.insert(cmfzAdmin);
        System.out.println(insert);
    }

    @Test
    public void  test3(){
        //修改一条数据
        CmfzAdmin cmfzAdmin = new CmfzAdmin();
        cmfzAdmin.setId(3);
        cmfzAdmin.setUsername("sss");

//        根据id更新数据
        int i = cmfzAdminDao.updateById(cmfzAdmin);

        System.out.println(i);
    }

    @Test
    public void  test4(){
        //根据id删除
        int i = cmfzAdminDao.deleteById(3);
        System.out.println(i);

        //批量删除  deleteBatchIds(ids)

    }

    @Test
    public void  test5(){
        //条件查询  根据name查询
        //1.创建一个条件构造器
        QueryWrapper<CmfzAdmin> queryWrapper = new QueryWrapper<>();
        //2.将条件写入 条件构造器
        queryWrapper.eq("username","zhangsan");
        CmfzAdmin cmfzAdmin = cmfzAdminDao.selectOne(queryWrapper);
        System.out.println(cmfzAdmin);

    }

    /**
     * 查询 名字为lisi 或者 密码为123456
     *  or  和   and
     */
    @Test
    public void  test6(){
        //条件查询  根据name查询
        //1.创建一个条件构造器
        QueryWrapper<CmfzAdmin> queryWrapper = new QueryWrapper<>();
        //2.将条件写入 条件构造器
        queryWrapper.eq("username","zhangsan").or().eq("password","123456");
        List<CmfzAdmin> cmfzAdmins = cmfzAdminDao.selectList(queryWrapper);
        for (CmfzAdmin cmfzAdmin : cmfzAdmins) {

        System.out.println(cmfzAdmin);
        }

    }

    /**
     * 根据用户名  修改属性
     *
     */
    @Test
    public void  test7(){
        //条件查询  根据name查询
        //1.创建一个条件构造器
        UpdateWrapper<CmfzAdmin> updateWrapper = new UpdateWrapper<>();
        //2.将条件写入 条件构造器

        updateWrapper.set("password",12223);
        updateWrapper.eq("username","sss");
        int update = cmfzAdminDao.update(null, updateWrapper);
        System.out.println(update);


    }

    /**
     * 分页
     */
    @Test
    public void  test8(){
        /**
         * 分页查询的方法 selectPage()
         * 参数一: page分页的对象
         * 参数二:条件构造器 可以直接写null
         */
        //1.创建一个分页对象 封装分页数据
        Page<CmfzAdmin> adminPage = new Page<>(2, 2);
        //2.使用分页查询的方法
        Page<CmfzAdmin> cmfzAdminPage = cmfzAdminDao.selectPage(adminPage, null);
        //3.从page对象中获取查询的数据
        /**
         * getRecords() 获取查询结果
         * getTotal()  获取总条件
         */

        long total = cmfzAdminPage.getTotal();
        System.out.println("total = " + total);
        List<CmfzAdmin> adminList = cmfzAdminPage.getRecords();
        for (CmfzAdmin cmfzAdmin : adminList) {
            System.out.println(cmfzAdmin);
        }



    }


}
